import Vue from 'vue';
import Vuex, { ModuleTree } from 'vuex';
import getters from '@/stores/getters.js'

Vue.use(Vuex);

// 自动引入 stores 目录下的所有模块
// noinspection JSUnresolvedFunction
const modulesFiles = require.context('@/stores', true, /\.ts$/);
const modules: ModuleTree<any> = {};
modulesFiles.keys()
    // 快捷循环方法
    .reduce((module, modulePath) => {
        // 将'./app.js'格式文件名转为'app.js'格式
        const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1');
        const value = modulesFiles(modulePath);
        modules[moduleName] = value.default;
        return modules;
    }, {});

export default new Vuex.Store({
    modules,
    getters,
});
